VSCode Neovim で暮らす
最近は VSCode に VSCode Neovim 拡張機能を入れて開発をするようになった
今のプロジェクトでは Python を使っていて、DevContainer 上で開発をしている
そのため、ほかのメンバーと同じような環境で開発をしたほうが問題が起きた時にも対応がしやすそうだから、VSCode を使うことにした
LSP も補完も最初から設定されていて、何も設定しなくても動くのは良いと思った
最初のほうは VSCode だけで使っていたけど、VSCode Neovim という裏で Neovim を動かせる拡張機能があることを知り、入れてみた
ある程度のプラグインは動作していたから、問題なく開発ができている
ファイラーは VSCode 標準のものをしようしているため、 lir.nvim は使っていない
バッファ関連は Neovim からはうまく扱えないっぽい
インストール・初期設定
WSL2 上に Neovim をインストールする
tamago324.icon https://github.com/vscode-neovim/vscode-neovim/issues/2407#issuecomment-2708991410
0.9.5 にしておくのがよさそう
バージョンは 0.9.5
code:sh
cd /tmp
curl -L https://github.com/neovim/neovim/releases/download/v0.9.5/nvim-linux-x86_64.appimage -o nvim.appimage
chmod u+x nvim.appimage
sudo mv nvim.appimage /usr/local/bin
sudo ln -snf /usr/local/bin/nvim.appimage /usr/local/bin/nvim
Neovim を起動できるように設定
code:sh
sudo add-apt-repository universe
sudo apt install libfuse2
この設定は、Neovim がうまく起動できなかったため、設定した
code:sh
$ nvim
dlopen(): error loading libfuse.so.2
AppImages require FUSE to run.
You might still be able to extract the contents of this AppImage
if you run it with the --appimage-extract option.
See https://github.com/AppImage/AppImageKit/wiki/FUSE
for more information
https://github.com/AppImage/AppImageKit/wiki/FUSE を見てみた
AppImages を実行するには、FUSE バージョン2が必要らしい
root 以外のユーザーがファイルシステムをマウントできるシステム
VSCode Neovim 拡張機能を入れる
VSCode Neovim - Visual Studio Marketplace
settings.json に設定を追加する
code:json
"vscode-neovim.neovimExecutablePaths.linux": "/usr/local/bin/nvim",
"vscode-neovim.useWSL": true,
"vscode-neovim.neovimInitVimPaths.linux": "/home/takuya/.config/nvim/init.vim",
// vscode-neovim messages が output Panel に表示されないようにする
// https://github.com/vscode-neovim/vscode-neovim/issues/2099#issuecomment-2657736422
"workbench.view.showQuietly": {
"workbench.panel.output": true
},
Neovim と VSCode の設定
$HOME/.config/nvim/init.vim に書いていく
オプションやキーマップはある程度はそのまま移行できた
使用できそうでよく使っていたプラグインは移行した
code:vim
Plug 'svermeulen/vim-cutlass'
Plug 'machakann/vim-sandwich'
Plug 'machakann/vim-swap'
" w e での移動がしやすくなる
Plug 'kana/vim-smartword'
" clipboard
Plug 'rcmdnk/yankround.vim'
" 検索
Plug 'haya14busa/vim-asterisk'
Plug 'hrsh7th/vim-eft'
Plug 'rlane/pounce.nvim'
Plug 'kana/vim-niceblock'
" operator
Plug 'kana/vim-operator-replace'
Plug 'kana/vim-operator-user'
" object
Plug 'kana/vim-textobj-user'
Plug 'kana/vim-textobj-entire'
Plug 'osyo-manga/vim-textobj-multiblock'
Plug 'Julian/vim-textobj-variable-segment'
Plug 'kana/vim-textobj-line'
Plug 'nvim-treesitter/nvim-treesitter'
Plug 'nvim-treesitter/nvim-treesitter-textobjects'
クリップボードの共有ができるようにする
code:vim
set clipboard=unnamedplus
インサートモードを抜けたら IME OFF にする
https://github.com/iuchim/zenhan の zip をダウンロードして、windows のどこかに配置しておく
"C:\Users\tamago324\tools\zenhan.exe" に配置した
init.vim に以下を追加
code:vim
" INSERT モードを抜けたら、IME OFF
autocmd InsertLeave * call <SID>ime_off()
function! s:ime_off()
let l:shell = &shell
let &shell='/usr/bin/bash --login'
call system('/mnt/c/Users/tamago324/tools/zenhan.exe 0')
let &shell = l:shell
endfunction
VSCode のマッピングの設定
VSCode の設定
code:かっこの対応の線を表示する.json
{
"editor.guides.bracketPairs": true
}
code:スペースを表示しないようにするjson
{
"editor.renderWhitespace": "none"
}
code:テストに失敗してもそのテストの結果を表示しないようにする.json
{
"testing.automaticallyOpenPeekView": "never",
}
code:カーソルを点滅させないようにする.json
{
"editor.cursorBlinking": "solid",
}
code:ウィンドウの真ん中のコマンド入力欄を非表示にする.json
{
"window.commandCenter": false,
}
code:ターミナルの1つ前のコマンド行を固定する.json
{
"terminal.integrated.stickyScroll.enabled": true,
}
code:カーソルの移動を滑らかにする.json
{
"editor.cursorSmoothCaretAnimation": "on",
}
code:エクスプローラーのインデントを大きくする.json
{
"workbench.tree.indent": 20
}
拡張機能
GitHub Theme - Visual Studio Marketplace
カラースキーマ
GitHub Dark が好き
Auto Hide - Visual Studio Marketplace
ターミナルの自動非表示
Error Lens - Visual Studio Marketplace
エラーを表示してくれる
参考文献
超融合!時空を越えた絆 Neo Vim(VSCode)を試してみた
VSCode Neovim を使ってみるきっかけになった記事
VSCode NeoVimをUbuntu on WSL2に入れた時の備忘録
Neovim はじめたときの初期環境構築備忘録
NeovimとVSCodeと私 #archLinux - Qiita
マッピングの設定を参考にした
#neovim #vscode